/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sv.com.intesal.proyecto.managed;

import java.io.Serializable;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import org.primefaces.event.SelectEvent;
import sv.com.intesal.clases.LimpiarManaged;
import sv.com.intesal.clases.Mensaje;
import sv.com.intesal.compra.bean.Material;
import sv.com.intesal.proyecto.bean.AsignarMaterialTipoProyecto;
import sv.com.intesal.proyecto.bean.TipoProyecto;
import sv.com.intesal.proyecto.controlador.AsignarMaterialTipoProyectoControlador;
import sv.com.intesal.proyecto.controlador.TipoProyectoControlador;
import sv.com.intesal.seguridad.managed.SessionManaged;

/**
 *
 * @author ejerez
 */
@ManagedBean(name = "asignarMaterialTipoProyectoManaged")
@ViewScoped
public class AsignarMaterialTipoProyectoManaged implements Serializable {

    private SessionManaged sm;
    private Mensaje m;

    /*MATERIAL*/
    private Material selectedMaterial;

    /*ASIGNAR MATERIAL*/
    private List<AsignarMaterialTipoProyecto> asignarMaterialTipoProyectos;
    private AsignarMaterialTipoProyecto selectedAsignarMaterialTipoProyecto;

    /*TIPO PROYECTO*/
    private List<TipoProyecto> tipoProyectos;

    public AsignarMaterialTipoProyectoManaged() {

        sm = new SessionManaged();
        m = new Mensaje();
        this.selectedAsignarMaterialTipoProyecto = new AsignarMaterialTipoProyecto();
        this.selectedMaterial = new Material();

        this.llenarTipoProyecto();
    }

    private void llenarTipoProyecto() {
        try {
            if (this.getTipoProyectos() == null) {
                TipoProyectoControlador tp = new TipoProyectoControlador();
                this.setTipoProyectos(tp.fillComboBox());
            }
        } catch (Exception e) {
            e.printStackTrace();
            m.messageError(m.getIerror());
        }
    }

    public void fillGrid() {
        try {
            if (sm.validar_rol_usuario("wfrmAsignarMaterial", sm.buscar) == true) {
                AsignarMaterialTipoProyectoControlador am = new AsignarMaterialTipoProyectoControlador();
                this.asignarMaterialTipoProyectos = am.getFillGrid();
            }
        } catch (Exception e) {
            e.printStackTrace();
            m.messageError(m.getIerror());
        }
    }

    public void mantenimiento() {

        try {
            if (this.validar() == true) {
                if (this.selectedAsignarMaterialTipoProyecto.getCodigo_mtp() == null) {
                    if (sm.validar_rol_usuario("wfrmAsignarMaterial", sm.agregar) == true) {
                        this.selectedAsignarMaterialTipoProyecto.setId_dm(this.selectedMaterial.getId_dm());

                        AsignarMaterialTipoProyectoControlador am = new AsignarMaterialTipoProyectoControlador();
                        am.setMantenimiento(this.selectedAsignarMaterialTipoProyecto);
                        LimpiarManaged.limpiar();
                    }
                } else {
                    if (sm.validar_rol_usuario("wfrmAsignarMaterial", sm.modificar) == true) {
                        this.selectedAsignarMaterialTipoProyecto.setId_dm(this.selectedMaterial.getId_dm());

                        AsignarMaterialTipoProyectoControlador am = new AsignarMaterialTipoProyectoControlador();
                        am.setMantenimiento(this.selectedAsignarMaterialTipoProyecto);
                        LimpiarManaged.limpiar();
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            m.messageError(m.getIerror());
        }
    }

    private Boolean validar() throws Exception {

        try {
            Boolean var_return = true;

            if (this.selectedAsignarMaterialTipoProyecto.getId_tp() == null) {
                m.messageError("DEBE SELECCIONAR UN TIPO DE PROYECTO");
                var_return = false;
            }
            if (this.selectedMaterial == null) {
                m.messageError("NO HAY MATERIAL");
                var_return = false;
            }
            return var_return;
        } catch (Exception e) {
            throw new Exception(e);
        }
    }

    public void getMaterial_Quick(Material ma) {

        try {
            this.selectedMaterial = ma;
        } catch (Exception e) {
            m.messageError(m.getIerror());
            e.printStackTrace();
        }
    }

    public void eliminarRegistro() {
        try {
            if (this.validarEliminar() == true) {
                if (sm.validar_rol_usuario("wfrmAsignarMaterial", sm.eliminar) == true) {
                    AsignarMaterialTipoProyectoControlador am = new AsignarMaterialTipoProyectoControlador();
                    am.eliminarItem(this.selectedAsignarMaterialTipoProyecto);
                    LimpiarManaged.limpiar();
                }
            }
        } catch (Exception e) {
            m.messageError(m.getIerror());
            e.printStackTrace();
        }
    }

    private Boolean validarEliminar() throws Exception {

        try {
            Boolean var_return = true;
            if (this.selectedAsignarMaterialTipoProyecto.getCodigo_mtp() == null) {
                m.messageError("DEBE ELEGIR UN REGISTRO PARA ELIMINAR");
                var_return = false;
            }
            return var_return;
        } catch (Exception e) {
            throw new Exception(e);
        }
    }

    public void Material_x_Grid(SelectEvent event) {
        try {
            AsignarMaterialTipoProyecto am = ((AsignarMaterialTipoProyecto) event.getObject());
            this.selectedMaterial.setId_dm(am.getId_dm());
            this.selectedMaterial.setNombre_m(am.getNombre_m());
            this.selectedMaterial.setCodigo_barra_m(am.getCodigo_barra_m());
        } catch (Exception e) {
            m.messageError(m.getIerror());
            e.printStackTrace();
        }
    }

    /*SETTERS AND GETTERS*/
    public List<AsignarMaterialTipoProyecto> getAsignarMaterialTipoProyectos() {
        return asignarMaterialTipoProyectos;
    }

    public void setAsignarMaterialTipoProyectos(List<AsignarMaterialTipoProyecto> asignarMaterialTipoProyectos) {
        this.asignarMaterialTipoProyectos = asignarMaterialTipoProyectos;
    }

    public AsignarMaterialTipoProyecto getSelectedAsignarMaterialTipoProyecto() {
        if (selectedAsignarMaterialTipoProyecto == null) {
            selectedAsignarMaterialTipoProyecto = new AsignarMaterialTipoProyecto();
        }
        return selectedAsignarMaterialTipoProyecto;
    }

    public void setSelectedAsignarMaterialTipoProyecto(AsignarMaterialTipoProyecto selectedAsignarMaterialTipoProyecto) {
        this.selectedAsignarMaterialTipoProyecto = selectedAsignarMaterialTipoProyecto;
    }

    public Material getSelectedMaterial() {
        if (selectedMaterial == null) {
            selectedMaterial = new Material();
        }
        return selectedMaterial;
    }

    public void setSelectedMaterial(Material selectedMaterial) {
        this.selectedMaterial = selectedMaterial;
    }

    public List<TipoProyecto> getTipoProyectos() {
        return tipoProyectos;
    }

    public void setTipoProyectos(List<TipoProyecto> tipoProyectos) {
        this.tipoProyectos = tipoProyectos;
    }
}
